#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
#include <algorithm>
#include<vector>
#include<map>

using namespace std;

int get(int n)
{
    int res = 0;
    while (n)
    {
        if (n & 1)
            res++;
        n >>= 1;
    }
    return res;
}

//int main()
//{
//    int t;
//    cin >> t;
//    while (t--)
//    {
//        int n;
//        cin >> n;
//        map<int, int> m;
//        int a;
//        while (n--)
//        {
//            cin >> a;
//            m[get(a)]++;
//        }
//        cout << m.size() << endl;
//    }
//    return 0;
//}

const int N = 200010;

struct node
{
    int id, v;
    bool operator<(const node a) const
    {
        return v < a.v;
    }
}a[N], b[N];

int n, m;
int res[N], sunk[N];

int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i].v;
        a[i].id = i;
    }

    sort(a + 1, a + n + 1);
    cin >> m;

    for (int i = 1; i <= m; i++)
    {
        cin >> b[i].v;
        b[i].id = i;
    }

    sort(b + 1, b + m + 1);

    int last = 1, ret = 1;
    sunk[0] = sunk[n + 1] = 1;
    for (int i = 1; i <= m; i++)
    {
        while (last <= n && a[last].v <= b[i].v)
        {
            int idx = a[last].id;
            sunk[idx] = 1;
            int adj = sunk[idx - 1] + sunk[idx + 1];
            if (adj == 0)    ret++;
            else if (adj == 2)   ret--;
            last++;
        }
        res[b[i].id] = ret;
    }

    for (int i = 1; i <= m; i++)
        cout << res[i] << endl;

    return 0;
}